package com.mingqi.hw.test5160;

/**【太阳能板最大面积】
 * 给航天器一侧加装长方形或正方形的太阳能板（图中的红色斜线区域），需要先安装两个支柱（图中的黑色竖条），再在支柱的中间部分固定太阳能板。但航天器不同位置的支柱长度不同，太阳能板的安装面积受限于最短一侧的那根支柱长度。如图：
 * 现提供一组整形数组的支柱高度数据，假设每根支柱间距离相等为1个单位长度，计算如何选择两根支柱可以使太阳能板的面积最大。
 * 输入描述:
 * 10,9,8,7,6,5,4,3,2,1
 * 注：支柱至少有2根，最多10000根，能支持的高度范围1~10^9的整数。柱子的高度是无序的，例子中递减只是巧合。
 * 输出描述:
 * 可以支持的最大太阳能板面积：（10米高支柱和5米高支柱之间）
 * 25
 * 示例1
 * 输入
 * 10,9,8,7,6,5,4,3,2,1
 * 输出
 * 25
 * 备注:
 * 10米高支柱和5米高支柱之间宽度为5，高度取小的支柱高也是5，面积为25。任取其他两根支柱所能获得的面积都小于25。所以最大的太阳能板面积为25。
 */
public class ZT54 {

    public static void main(String[] args) {
        int[] pillarHeights = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
        System.out.println("可以支持的最大太阳能板面积：" + findMaxSolarPanelArea(pillarHeights));
    }

    public static int findMaxSolarPanelArea(int[] pillarHeights) {
        // 至少两根支柱
        if (pillarHeights.length < 2) {
            throw new IllegalArgumentException("至少需要两根支柱");
        }

        // 初始面积设为0或第一对支柱的面积
        int maxArea = 0;

        // 遍历每对支柱
        for (int i = 0; i < pillarHeights.length - 1; i++) {
            for (int j = i + 1; j < pillarHeights.length; j++) {
                // 计算两根支柱之间的距离（减一）
                int width = j - i - 1;
                // 取两根支柱中较短的支柱高度
                int height = Math.min(pillarHeights[i], pillarHeights[j]);
                // 计算面积
                int area = height * width;
                // 更新最大面积
                maxArea = Math.max(maxArea, area);
            }
        }

        return maxArea;
    }
}
